#ifndef __SRC_DEVICE_INFO_H__
#define __SRC_DEVICE_INFO_H__
#include <stdint.h>
typedef struct
{
    uint16_t master_white; // 0x00;
    uint16_t white_red;    // 0x01;
    uint16_t white_green;  // 0x02;
    uint16_t white_blue;   // 0x03;
} master_white_t;
typedef struct
{
    uint16_t mod_shading_v_saw;       // 0x04;
    uint16_t mod_shading_v_saw_red;   // 0x05;
    uint16_t mod_shading_v_saw_green; // 0x06;
    uint16_t mod_shading_v_saw_blue;  // 0x07;
} master_v_mod_saw_t;
typedef struct
{
    uint16_t master_flare; // 0x08
    uint16_t flare_red;    // 0x09
    uint16_t flare_green;  // 0x01
    uint16_t flare_blue;   // 0x0b

} master_flare_t;
typedef struct
{
    uint16_t detail_limiter;       // 0x0c
    uint16_t detail_white_limiter; // 0x0d
    uint16_t detail_black_limiter; // 0x0e
    uint16_t reserved;             // 0x0f
} detail_t;
typedef struct
{
    uint16_t master_black_gamma; // 0x10
    uint16_t black_gamma_red;    // 0x11
    uint16_t black_gamma_green;  // 0x12
    uint16_t black_gamma_blue;   // 0x13

} black_gamma_t;
typedef struct
{

    uint16_t master_knee_point; // 0x14
    uint16_t knee_point_red;    // 0x15
    uint16_t knee_point_green;  // 0x16
    uint16_t knee_point_blue;   // 0x17
} knee_point_t;
typedef struct
{
    uint16_t master_knee_slope; // 0x18
    uint16_t knee_slope_red;    // 0x19
    uint16_t knee_slope_green;  // x01a
    uint16_t knee_slope_blue;   // 0x1b

} knee_slope_t;
typedef struct
{
    uint16_t master_gamma; // 0x1c
    uint16_t gamma_red;    // 0x1d
    uint16_t gamma_green;  // 0x1e
    uint16_t gamma_blue;   // 0x1f

} master_gamma_t;
typedef struct
{
    uint16_t master_white_clip; // 0x20
    uint16_t white_clip_red;    // 0x21
    uint16_t white_clip_green;  // 0x22
    uint16_t white_clip_blue;   // 0x23
} master_white_clip_t;

typedef struct
{
    uint16_t rpn_cursor_h_position; // 0x48
    uint16_t rpn_cursor_v_position; // 0x49
    uint16_t rpn_level;             // 0x4a
} rpn_t;
typedef struct
{
    uint16_t center_marker_h_position; // 0x4b
    uint16_t center_marker_v_position; // 0x4c
} center_marker_t;
typedef struct
{
    uint16_t auto_iris_gain_P;      // 10 bits 4d
    uint16_t auto_iris_gain_I;      // 10 bits  4EH
    uint16_t auto_iris_gain_D;      // 10 bits 4FH
    uint16_t auto_iris_level;       // 10 bits 50H
    uint16_t auto_iris_close_limit; // 10 bits 51H
    uint16_t auto_iris_insence;     // 10 bits 52H
    uint16_t auto_iris_moduration;  // 10bits 53H
} auto_iris_t;
typedef struct
{
    uint16_t skin_detail2_phase; // 0x54
    uint16_t skin_detail2_width; // 0x55
    uint16_t skin_detail3_phase; // 0x56
    uint16_t skin_detail3_width; // 0x57

} skin_detail_t;

typedef struct
{
    uint16_t skin_tone_auto_iris_phase;     // 0x58
    uint16_t skin_tone_auto_iris_width;     // 0x59
    uint16_t skin_tone_auto_iris_apl_ratio; // 0x5a
    uint16_t skin_tone_auto_iris_level;     // 0x5b

} skin_tone_auto_iris_t;

typedef struct
{
    uint16_t auto_iris_variable_window_h_positio; // 0x5c
    uint16_t auto_iris_variable_window_v_positio; // 0x5d
    uint16_t auto_iris_variable_window_width;     // 0x5e
    uint16_t auto_iris_variable_window_height;    // 0x5f

} auto_iris_variable_window_t;
typedef struct
{
    uint16_t matrix_g_r; // 0xa3
    uint16_t matrix_b_r; // 0xa4
    uint16_t matrix_r_g; // 0xa5
    uint16_t matrix_b_g; // 0xa6
    uint16_t matrix_r_b; // 0xa7
    uint16_t matrix_g_b; // 0xa8

} matrix_rgb_t;
typedef struct
{
    uint16_t black_r;
    uint16_t black_g;
    uint16_t black_b;
} black_rgb_t;
typedef struct
{
    // 5-2-1. CHU_ANALOG Address
    master_white_t master_white;        // 0x00~0x03
    master_v_mod_saw_t master_vmod_saw; // 0x04~0x07
    master_flare_t master_flare;        // 0x08~0x0b
    detail_t datail;                    // 0x0c~0x0f

    black_gamma_t black_gamma;             // 0x10~0x13
    knee_point_t knee_point;               // 0x14~0x17
    knee_slope_t knee_slope;               // 0x18~0x1b
    master_gamma_t master_gamma;           // 0x1c~0x1f
    master_white_clip_t master_white_clip; // 0x20~0x23
    uint16_t iris_mix_ratio;               // 10bits  0x40;
    uint16_t ecs_frequency;                // 10bits 0x41
    uint16_t s_evs_data;                   // 10bits 0x42
    uint16_t skin_detail_1_phase;          // 0x43
    uint16_t skin_detail_1_width;          // 0x44

    uint16_t v_reset;            // 0x45
    uint16_t triax_cable_length; // 0x46
    uint16_t chu_optica_level;   // 0x47
    rpn_t rpn;
    center_marker_t center_marker;
    auto_iris_t auto_iris;
    skin_detail_t skin_detail;
    skin_tone_auto_iris_t skin_tone_auto_iris;
    auto_iris_variable_window_t auto_iris_variable_window;
    uint16_t iris;                     // 0x60
    uint16_t focus;                    // 0x61
    uint16_t fine_focus;               // 0x62
    uint16_t zoom;                     // 0x63
    uint16_t vf_menu_rotary_encoder;   // 0x64
    uint16_t auto_iris_speed;          // 0x65
    uint16_t detail_level_depend;      // 0xa0
    uint16_t skin_detail_1_level;      // 0xa1
    uint16_t skin_detail_1_saturation; // 0xa2
    matrix_rgb_t matrix_rgb;
    uint16_t master_black; //0xa9
    black_rgb_t black_rgb;
} chu_analg_rel_t;

#endif
